﻿#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
////int main()
//{
//	int num = 10;
//	int count = 0;//计数
//		while (num)
//		{
//			if (num % 2 == 1)
//				count++;
//			num = num / 2;
//		}
//	printf("2进制中1的个数=%d\n", count);
//		return 0;
//}
//
//int main()
//{
//	int a = 5;
//	int b = 3;
//	a = a ^ b;
//	b = a ^ b;
//	a = a ^ b;
//	printf("%d %d", a, b);
//
//	return 0;
//}

int main()
{
	int count = 0;
	int n = 0;
	scanf("%d", &n);
	while (n)
	{
		n = n & (n - 1);
		count++;
	}
	printf("%d", count);
	return 0;
}

//#include<stdio.h>
//int main()
//{
//	int count = 0;
//	int n = 0;
//	scanf("%d", &n);
//	while (n)
//	{
//		n = n & (n - 1);
//		count++;
//	}
//	printf("%d", count);
//	return 0;
//}
// 



//int main()
//{
//	unsigned int n = 0;
//	int count = 0;
//	scanf("%d", &n);
//	while (n)
//	{
//		if (n % 2 == 1)
//		{
//			count++;
//		}
//		n = n / 2;
//	}
//	printf("%d", count);
//	return 0;




//#include <stdio.h> 
//int count_num_of_1(unsigned int n) 
//{ int count=0; while (n) { if((n%2)==1) { count++; } n/=2; } return count; } int main() { int num=0; scanf("%d",&num); int n=count_num_of_1(num); printf("%d\n",n); return 0; }


#include<stdio.h>
int x(unsigned int n)
{
	int count = 0;
	while (n)
	{
		n = n & (n - 1);
		count++;
	}
	return count;
}
int main()
{

	int n = 0;
	scanf("%d", &n);
	int arr = x(n);
	printf("%d", arr);
	return 0;
}
